home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 5 / BBS in a Box -Volume V (BBS in a Box) (April 1992).iso / Files / Prog / M / LSC213.cpt / Color.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-09-26  |  6.5 KB  |  351 lines  |  [TEXT/KAHL]

  1.  
  2. /*
  3.  *  Color.h
  4.  *
  5.  *  Copyright (c) 1986, 1987 THINK Technologies, Inc.
  6.  *  These interfaces are based on information copyrighted
  7.  *  by Apple Computer, Inc., 1985, 1986, 1987.
  8.  *
  9.  */
  10.  
  11. #ifndef _Color_
  12. #define _Color_
  13.  
  14. #ifndef _Quickdraw_
  15. #include "Quickdraw.h"
  16. #endif
  17.  
  18.  
  19. #define invalColReq        -1            /* invalid color table request */
  20.  
  21. /* VALUES FOR GDType */
  22.  
  23. #define clutType        0
  24. #define fixedType        1
  25. #define directType        2
  26.  
  27. /*  BIT ASSIGNMENTS FOR GDFlags */
  28.  
  29. #define gdDevType        0
  30. #define ramInit            10
  31. #define mainScrn        11
  32. #define allInit            12
  33. #define screenDevice    13
  34. #define noDriver        14
  35. #define scrnActive        15
  36.  
  37. #define hiliteBit        7
  38.  
  39. #define defQDColors     127
  40.  
  41.  
  42. typedef struct RGBColor{
  43.     unsigned short    red;
  44.     unsigned short    green;
  45.     unsigned short    blue;
  46. } RGBColor;
  47.  
  48. typedef struct ColorSpec{
  49.     short            value;
  50.     RGBColor        rgb;
  51. } ColorSpec;
  52.  
  53. typedef ColorSpec CSpecArray[1];        /* array [0..0] of ColorSpec */
  54.  
  55. typedef struct ColorTable{
  56.     long            ctSeed;
  57.     short            transIndex;
  58.     short            ctSize;
  59.     CSpecArray        ctTable;
  60. } ColorTable, *CTabPtr, **CTabHandle;
  61.  
  62. typedef struct MatchRec{
  63.     unsigned short    red;
  64.     unsigned short    green;
  65.     unsigned short    blue;
  66.     long            matchData;
  67. } MatchRec;
  68.  
  69. typedef struct PixMap{
  70.     Ptr                baseAddr;
  71.     short            rowBytes;
  72.     Rect            bounds;
  73.     short            pmVersion;
  74.     short            packType;
  75.     long            packSize;
  76.     Fixed            hRes;
  77.     Fixed            vRes;
  78.     short            pixelType;
  79.     short            pixelSize;
  80.     short            cmpCount;
  81.     short            cmpSize;
  82.     long            planeBytes;
  83.     CTabHandle        pmTable;
  84.     long            pmReserved;
  85. } PixMap, *PixMapPtr, **PixMapHandle;
  86.  
  87. typedef struct PixPat{
  88.     short            patType;
  89.     PixMapHandle    patMap;
  90.     Handle            patData;
  91.     Handle            patXData;
  92.     short            patXValid;
  93.     Handle            patXMap;
  94.     Pattern            pat1Data;
  95. } PixPat, *PixPatPtr, **PixPatHandle;
  96.  
  97. typedef struct CCrsr{
  98.     short            crsrType;
  99.     PixMapHandle    crsrMap;
  100.     Handle            crsrData;
  101.     Handle            crsrXData;
  102.     short            crsrXValid;
  103.     Handle            crsrXHandle;
  104.     Bits16            crsr1Data;
  105.     Bits16            crsrMask;
  106.     Point            crsrHotSpot;
  107.     long            crsrXTable;
  108.     long            crsrID;
  109. } CCrsr, *CCrsrPtr, **CCrsrHandle;
  110.  
  111. typedef struct CIcon{
  112.     PixMap            iconPMap;
  113.     BitMap            iconMask;
  114.     BitMap            iconBMap;
  115.     Handle            iconData;
  116.     short            iconMaskData[1];
  117. } CIcon, *CIconPtr, **CIconHandle;
  118.  
  119. typedef struct GammaTbl{
  120.     short            gVersion;
  121.     short            gType;
  122.     short            gFormulaSize;
  123.     short            gChanCnt;
  124.     short            gDataCnt;
  125.     short            gDataWidth;
  126.     short            gFormulaData[1];
  127. } GammaTbl, *GammaTblPtr, **GammaTblHandle;
  128.  
  129. typedef struct ITab{
  130.     long            iTabSeed;
  131.     short            iTabRes;
  132.     char            iTTable[1];
  133. } ITab, *ITabPtr, **ITabHandle;
  134.  
  135. typedef struct SProcRec{
  136.     struct SProcRec    **nxtSrch;
  137.     ProcPtr            srchProc;
  138. } SProcRec, *SProcPtr, **SProcHndl;
  139.  
  140. typedef struct CProcRec{
  141.     struct CProcRec    **nxtComp;
  142.     ProcPtr            compProc;
  143. } CProcRec, *CProcPtr, **CProcHndl;
  144.  
  145. typedef struct GDevice{
  146.     short            gdRefNum;
  147.     short            gdID;
  148.     short            gdType;
  149.     ITabHandle        gdITable;
  150.     short            gdResPref;
  151.     SProcHndl        gdSearchProc;
  152.     CProcHndl        gdCompProc;
  153.     short            gdFlags;
  154.     PixMapHandle    gdPMap;
  155.     long            gdRefCon;
  156.     struct GDevice    **gdNextGD;
  157.     Rect            gdRect;
  158.     long            gdMode;
  159.     short            gdCCBytes;
  160.     short            gdCCDepth;
  161.     Handle            gdCCXData;
  162.     Handle            gdCCXMask;
  163.     long            gdReserved;
  164. } GDevice, *GDPtr, **GDHandle;
  165.  
  166. typedef struct CGrafPort{
  167.     short            device;
  168.     PixMapHandle    portPixMap;
  169.     short            portVersion;
  170.     Handle            grafVars;
  171.     short            chExtra;
  172.     short            pnLocHFrac;
  173.     Rect            portRect;
  174.     RgnHandle        visRgn;
  175.     RgnHandle        clipRgn;
  176.     PixPatHandle    bkPixPat;
  177.     RGBColor        rgbFgColor;
  178.     RGBColor        rgbBkColor;
  179.     Point            pnLoc;
  180.     Point            pnSize;
  181.     short            pnMode;
  182.     PixPatHandle    pnPixPat;
  183.     PixPatHandle    fillPixPat;
  184.     short            pnVis;
  185.     short            txFont;
  186.     Style            txFace;
  187.     short            txMode;
  188.     short            txSize;
  189.     Fixed            spExtra;
  190.     long            fgColor;
  191.     long            bkColor;
  192.     short            colrBit;
  193.     short            patStretch;
  194.     QDHandle        picSave;
  195.     QDHandle        rgnSave;
  196.     QDHandle        polySave;
  197.     QDProcsPtr        grafProcs;
  198. } CGrafPort, *CGrafPtr;
  199.  
  200. typedef struct GrafVars{
  201.     RGBColor        rgbOpColor;
  202.     RGBColor        rgbHiliteColor;
  203.     Handle            pmFgColor;
  204.     short            pmFgIndex;
  205.     Handle            pmBkColor;
  206.     short            pmBkIndex;
  207.     short            pmFlags;
  208. } GrafVars;
  209.  
  210.  
  211. typedef struct CQDProcs {
  212.     Ptr                textProc;
  213.     Ptr                lineProc;
  214.     Ptr                rectProc;
  215.     Ptr                rRectProc;
  216.     Ptr                ovalProc;
  217.     Ptr                arcProc;
  218.     Ptr                polyProc;
  219.     Ptr                rgnProc;
  220.     Ptr                bitsProc;
  221.     Ptr                commentProc;
  222.     Ptr                txMeasProc;
  223.     Ptr                getPicProc;
  224.     Ptr                putPicProc;
  225.     Ptr                opcodeProc;            /* fields added to QDProcs */
  226.     Ptr                newProc1;
  227.     Ptr                newProc2;
  228.     Ptr                newProc3;
  229.     Ptr                newProc4;
  230.     Ptr                newProc5;
  231.     Ptr                newProc6;
  232. } CQDProcs,*CQDProcsPtr;
  233.  
  234. typedef short QDErr;
  235.  
  236. typedef struct ReqListRec{
  237.     short            reqLSize;
  238.     short            reqLData[1];
  239. } ReqListRec;
  240.  
  241.  
  242. /*  Palette Manager  */
  243.  
  244.     /* Usage constants */
  245. #define        pmCourteous        0
  246. #define        pmTolerant        2
  247. #define        pmAnimated        4
  248. #define        pmExplicit        8
  249.  
  250.     /* CUpdates constants */
  251. #define        pmAllCUpdates    0xC000
  252. #define        pmBackCUpdates    0x8000
  253. #define        pmFrontCUpdates    0x4000
  254.             
  255. typedef struct ColorInfo{
  256.         RGBColor    ciRGB;
  257.         short        ciUsage;
  258.         short        ciTolerance;
  259.         short        ciFlags;
  260.         long        ciPrivate;
  261. } ColorInfo;
  262.             
  263. typedef struct Palette{
  264.         short            pmEntries;
  265.         GrafPtr            pmWindow;
  266.         short            pmPrivate;
  267.         long            pmDevices;
  268.         long            pmSeeds;
  269.         ColorInfo        pmInfo[1];
  270. } Palette, *PalettePtr, **PaletteHandle;
  271.  
  272.  
  273. /*  Color Picker Package  */
  274.  
  275. #define MaxSmallFract     0x0000FFFFL
  276.  
  277. typedef short SmallFract;        /* Unsigned fraction between 0 and 1 */
  278.  
  279.  
  280. typedef struct HSVColor {
  281.     SmallFract        hue;
  282.     SmallFract        saturation;
  283.     SmallFract        value;
  284. } HSVColor;
  285.  
  286. typedef struct HSLColor {
  287.     SmallFract        hue;
  288.     SmallFract        saturation;
  289.     SmallFract        lightness;
  290. } HSLColor;
  291.  
  292. typedef struct CMYColor {
  293.     SmallFract        cyan;
  294.     SmallFract        magenta;
  295.     SmallFract        yellow;
  296. } CMYColor;
  297.  
  298.  
  299. /*  error codes  */
  300.  
  301. enum {
  302.     cResErr = -156,
  303.     cDevErr,
  304.     cProtectErr,
  305.     cRangeErr,
  306.     cNoMemErr,
  307.     cTempMemErr,
  308.     cMatchErr,
  309.     updPixMemErr = -125,
  310.     seNoMemErr = -21,
  311.     seInvRequest,
  312.     reRangeErr,
  313.     gdBadDev,
  314.     i2CRangeErr,
  315.     seProtErr,
  316.     seOutOfRange,
  317.     noRoomErr,
  318.     overRun,
  319.     tblAllocErr,
  320.     qAllocErr,
  321.     noColMatch,
  322.     iTabPurgErr
  323. };
  324.  
  325.  
  326. /*  functions returning non-integral values  */
  327. pascal PixMapHandle NewPixMap();
  328. pascal PixPatHandle NewPixPat();
  329. pascal PixPatHandle GetPixPat();
  330. pascal CTabHandle GetCTable();
  331. pascal CCrsrHandle GetCCursor();
  332. pascal CIconHandle GetCIcon();
  333. pascal GDHandle GetMaxDevice();
  334. pascal GDHandle GetDeviceList();
  335. pascal GDHandle GetMainDevice();
  336. pascal GDHandle GetNextDevice();
  337. pascal GDHandle NewGDevice();
  338. pascal GDHandle GetGDevice();
  339. pascal PaletteHandle NewPalette();
  340. pascal PaletteHandle GetNewPalette();
  341. pascal PaletteHandle GetPalette();
  342.  
  343.  
  344. /*  low-memory globals  */
  345. extern char HiliteMode : 0x938;
  346. extern GDHandle MainDevice : 0x8A4;
  347. extern GDHandle DeviceList : 0x8A8;
  348. extern GDHandle TheGDevice : 0xCC8;
  349.  
  350.  
  351. #endif _Color_